// --------------------------------------------------------------------------------------------------------------------
// <copyright file="TraceTypes.cs" company="StyleCop for ReSharper Development Team">
//   Copyright (c) StyleCop for ReSharper Development Team. All rights reserved.
// </copyright>
// <summary>
//   Represents the binary switch values used to turn on/off the various types of trace message.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace StyleCop.For.ReSharper.Diagnostics
{
    #region Using Directives

    using System;

    #endregion

    /// <summary>
    /// Represents the binary switch values used to turn on/off the various types of trace message.
    /// </summary>
    [Flags]
    public enum TraceTypes
    {
        /// <summary>
        /// No Tracing.
        /// </summary>
        None = 0,

        /// <summary>
        /// Trace in and out of methods and code blocks.
        /// </summary>
        InOut = 1,

        /// <summary>
        /// Trace output of error conditions.
        /// </summary>
        Error = 2,

        /// <summary>
        /// Trace output of warning conditions.
        /// </summary>
        Warning = 4,

        /// <summary>
        /// Trace output of general information.
        /// </summary>
        Info = 8,

        /// <summary>
        /// Trace the full details of sensitive information. This flag only has an effect in debug
        /// builds - release builds will always obscure sensitive information.
        /// </summary>
        SensitiveData = 64,

        /// <summary>
        /// Includes the .NET Thread name with the message output.
        /// </summary>
        IncludeThreadName = 128,

        /// <summary>
        /// Include the .Net Thread Hash with the message output.
        /// </summary>
        IncludeThreadId = 256,

        /// <summary>
        /// Trace output that is considered highly verbose.
        /// Also modifies the tracing produced from In/Out so that reference types are expanded.  
        /// </summary>
        Verbose = 512,
    }
}